// -*-c++-*- osgCairo - Copyright (C) 2010 Jeremy Moles
// $Id: Types 68 2010-07-08 22:04:24Z cubicool $

//! \file
//! \brief This file redefines all of the Cairo C API types as cleaner C++ types.

#ifndef OSGCAIRO_TYPES
#define OSGCAIRO_TYPES

#include <string>
#include <cairo.h>
#include <osgCairo/Export>

namespace osgCairo {

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html#cairo-pattern-t">Cairo API Link</a>
typedef cairo_pattern_t CairoPattern;

//! <a href="http://www.cairographics.org/manual/cairo-paths.html#cairo-path-t">Cairo API Link</a>
typedef cairo_path_t CairoPath;

//! <a href="http://www.cairographics.org/manual/cairo-path.html#cairo-path-data-t">Cairo API Link</a>
typedef cairo_path_data_t CairoPathData;

//! <a href="http://www.cairographics.org/manual/cairo-path.html#cairo-path-data-type-t">Cairo API Link</a>
typedef cairo_path_data_type_t CairoPathDataType;

//! <a href="http://www.cairographics.org/manual/cairo-text.html#cairo-glyph-t">Cairo API Link</a>
typedef cairo_glyph_t CairoGlyph;

//! <a href="http://www.cairographics.org/manual/cairo-matrix.html#cairo-matrix-t">Cairo API Link</a>
typedef cairo_matrix_t CairoMatrix;

//! <a href="http://www.cairographics.org/manual/cairo-scaled-font.html">Cairo API Link</a>
typedef cairo_scaled_font_t CairoScaledFont;

//! <a href="http://www.cairographics.org/manual/cairo-surface.html">Cairo API Link</a>
typedef cairo_surface_t CairoSurface;

//! <a href="http://www.cairographics.org/manual/cairo-context.html">Cairo API Link</a>
typedef cairo_t CairoContext;

//! <a href="http://www.cairographics.org/manual/cairo-status.html">Cairo API Link</a>
typedef cairo_status_t CairoStatus;

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html">Cairo API Link</a>
typedef cairo_pattern_type_t CairoPatternType;

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html">Cairo API Link</a>
typedef cairo_content_t CairoContent;

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html">Cairo API Link</a>
typedef cairo_antialias_t CairoAntialias;

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html">Cairo API Link</a>
typedef cairo_fill_rule_t CairoFillRule;

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html">Cairo API Link</a>
typedef cairo_line_cap_t CairoLineCap;

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html">Cairo API Link</a>
typedef cairo_line_join_t CairoLineJoin;

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html">Cairo API Link</a>
typedef cairo_operator_t CairoOperator;

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html">Cairo API Link</a>
typedef cairo_extend_t CairoExtend;

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html">Cairo API Link</a>
typedef cairo_filter_t CairoFilter;

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html">Cairo API Link</a>
typedef cairo_format_t CairoFormat;

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html">Cairo API Link</a>
typedef cairo_hint_style_t CairoHintStyle;

//! <a href="http://www.cairographics.org/manual/cairo-pattern.html">Cairo API Link</a>
typedef cairo_subpixel_order_t CairoSubpixelOrder;

//! <a href="http://cairographics.org/manual/cairo-scaled-font.html#cairo-text-extents-t">Cairo API Link</a>
typedef cairo_text_extents_t CairoTextExtents;

//! <a href="http://cairographics.org/manual/cairo-text.html#cairo-font-slant-t">Cairo API Link</a>
typedef cairo_font_slant_t CairoFontSlant;

//! <a href="http://cairographics.org/manual/cairo-text.html#cairo-font-weight-t">Cairo API Link</a>
typedef cairo_font_weight_t CairoFontWeight;

//! Returns the CairoFormat object as a capitalized string name.
std::string cairoFormatAsString(CairoFormat format);

}

#endif
